import HttpRequest from "uview-ui/libs/luch-request"
import { useLoginStore } from '@/store/login'

const request = (uni as any).$u.http as HttpRequest
const loginStore = useLoginStore()


request.interceptors.request.use((config) => { // 可使用async await 做异步操作
	console.log('request.interceptors.request')
	config.header = {
		...(loginStore.token ? { Authorization: loginStore.token } : {}),
		...config.header,
	}
	// 演示custom 用处
	// if (config.custom.auth) {
	//   config.header.token = 'token'
	// }
	// if (config.custom.loading) {
	//  uni.showLoading()
	// }
	// 演示
	// if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
	// 	return Promise.reject(config)
	// }
	return config
}, config => { // 可使用async await 做异步操作
	return Promise.reject(config)
})

request.interceptors.response.use((response) => {
	console.log('request.interceptors.response')
	/* 对响应成功做点什么 可使用async await 做异步操作*/
	// if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//    	return Promise.reject(response) // return Promise.reject 可使promise状态进入catch
	// if (response.config.custom.verification) { // 演示自定义参数的作用
	//   	return response.data
	// }
	// console.log(response)
	return response.data
}, (response) => {
	/*  对响应错误做点什么 （statusCode !== 200）*/
	console.log(response)
	if (response.statusCode === 401) {
		uni.redirectTo({
			url: '/pages/login/login'
		})
		uni.showToast({
			title: '请先登陆',
			icon: 'none'
		})
	}
	return Promise.reject(response)
})

export default request